package com.liangsui.mss.service;

import com.liangsui.mss.domain.*;
import com.liangsui.mss.dto.CareHistoryDto;
import com.liangsui.mss.dto.CareOrderFormDto;

import java.util.List;

/**
 * CareService
 *
 * @author zhangjiawei
 * @email 1533167396@qq.com
 * @date 2022/12/7 16:52
 */
public interface CareService  {
    /*******************************************处方开始**************************************************************/

    /**
     * @功能描述:根据处方ID---查询处方详细信息
     * @Description: List<CareOrder> 多个处方详细信息
     */
    List<CareOrderItem> queryCareOrdersItemsByCoId(String coId, String status);

    /**
     * @功能描述:根据病例ID查询处方信息
     * @Description: List<CareOrder> 多个处方信息
     */
    List<CareOrder> queryCareOrdersByChId(String chId);

    /**
     * @Description: 保存处方及详情信息
     * @Param: careOrderFormDto
     */
    int saveCareOrderItem(CareOrderFormDto careOrderFormDto);

    /**
     * @Description: 根据处方详情ID删除处方详情【只能删除未支付的】
     * @Param: itemId
     * @Return: int
     */
    int deleteCareOrderItemById(String itemId);

    /**
     * @Description: 根据处方详情ID查询处方详情
     * @Param: itemId
     * @Return: CareOrderItem
     */
    CareOrderItem queryCareOrderItemByItemId(String itemId);

    /*******************************************处方结束**************************************************************/

    /*******************************************病例开始**************************************************************/
    /**
     * @Description: 根据患者ID查询历史病历
     * @Param: patientId 患者ID
     * @Return: List<CareHistory> 多个历史病历
     */
    List<CareHistory> queryCareHistoryByPatientId(String patientId);


    /**
     * @Description: 保存病例信息
     * @Param: CareHistory
     * @Return: careHistoryDto
     */
    CareHistory saveOrUpdateCareHistory(CareHistoryDto careHistoryDto);


    /**
     * @功能描述: 根据挂号ID查询病例信息
     */
    CareHistory queryCareHistoryByRegId(String regId);

    /**
     * @Description: 根据病例ID查询病例信息
     * @Param: chId 病例ID
     * @Return: CareHistory 病例信息
     */
    CareHistory queryCareHistoryByChId(String chId);



    /*******************************************病例结束**************************************************************/


    /*******************************************开诊开始**************************************************************/

    // 这里注入开诊api接口

    /**
     * @Description: 完成就诊
     * @Param: regId
     * @Return: int
     */
    int visitComplete(String regId);


    /*******************************************开诊结束**************************************************************/


    /**
     * 根据条件查询所有项目
     * @param coType 项目类型 0 药品  1检查
     * @param status 支付状态
     * @return
     */
    List<CareOrderItem> queryCareOrderItemsByStatus(String coType, String status);


    /**
     * 根据ID查询处方详情
     * @param coId
     * @return
     */
    CareOrder queryCareOrderByCoId(String coId);


    /**
     * 根据详情ID查询收费订单详情
     * @param itemId
     * @return
     */
    OrderChargeItem queryOrderChargeItemByItemId(String itemId);

    /**
     * 根据处方ID查询处方详细信息
     * @param coId
     * @param orderDetailsStatus1
     * @return
     */
    List<CareOrderItem> queryCareOrderItemsByCoId(String coId, String orderDetailsStatus1);

    OrderCharge queryOrderChargeByOrderId(String coId);

    String doMedicine(List<String> itemIds);
}
